home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
ms_dos
/
tool
/
fmlbp
/
fmlbp.doc
< prev
next >
Wrap
Text File
|
1995-02-12
|
7KB
|
135 lines
FMLBP224/121用プリントプログラム
FMLBP.EXE Ver.1.10 by Jouji
【概要】
富士通レーザープリンタFMLBP224/121のFMモードでのテキストの印
字を行うためのプログラムです。半角文字を2バイト半角漢字(JISコード:2DXX,2E
XX)として印字しますから、コンピュータ画面でのイメージと一致した印字結果が得
られます。
フリーソフトのドキュメントをMS-DOSのコマンドラインから手軽に印字する
というような用途に向いていると思います。実際、私はフリーソフトのドキュメント
などは全て、JGAWKとこのプログラムを使った印字用のバッチコマンドによって
印字しています。ワープロソフトなどを使って印字するよりも手軽に素早く印字する
ことができます。
【経緯】
私の勤務先では、きびしい入札競争を勝ち残り、富士通のDOS/Vノートパソコ
ンFMV-425Nが大量に導入され、それと一緒にレーザープリンタFMLBP2
24も同数導入されました。やっぱり、新しいプリンタはフォントもきれいですし、
アウトラインフォントも装備しているし、良いことが多かったのですが、ただ一つ、
今までのプリンタのネイティブモードを使用していた自作のプリントプログラムが動
かなくなって困ってしまいました。
このようにプリンタの固有のモードやコントロールコードに依存したプログラムと
いうのは寿命が短いなあと、つくづく思い知らされました。それにも拘らず、またま
たFMLBPのFMモードに思いっきり依存したプログラムを作ってしまいました。
私のようなMS-Windowsの開発ツールも持っていないDOSアマグラマは、
寿命が短かろうがこのようなプログラムを作るしかないようです。
【動作】
コマンドラインパラメータにはファイル名または出力コードを指定します。両方と
も複数指定可能で、パラメータの順番に出力されます。たとえば、
fmlbp /$1bQ180!A$1bQ1!D$1b$24B$1bQ36;180$20G$1bQ3;27$20Q c:\print.tmp
のように指定します。先頭に「/」が付いたパラメータは出力コードとして処理され
その文字列がそのままプリンタに出力されます。ただし、「$」の後の2文字は16
進数として評価されます。たとえば「$1b」は0x1b(10進数の27)として評価さ
れプリンタに出力されます。「$」自身を出力する場合は「$24」と、空白を出力する
場合は「$20」として下さい。MS-DOSに解釈されてしまう文字を出力する場合
(「<>|」等)も16進数で指定して下さい。
先頭に「/」が付かないパラメータはファイル名としてそのファイル内容をプリン
タに出力します。このときにいろいろとコード変換を行います。ファイルからの入力
は行単位で行います。改行コードは出力しません。変換の仕様は次の通り。なお、フ
ァイルの最初の一行を無視するという仕様は廃止しました。
●行の先頭1バイトが0x03(^C)の場合は、コメント行として読み飛ばします。
●行の先頭1バイトが0x04(^D)の場合は、その後の文字列をファイル名としてファ
イルを開き、そのファイル内容のビット・イメージをプリンタに出力します。ファ
イルの最初の2バイトはX方向のドット数、次の2バイトはY方向のドット数を低
位バイト、高位バイトの順で格納しておきます。次からは2値のビットイメージを
黒を1として記録しておきます。ただし、X方向の1行のドット数が8の倍数でな
い場合は、1バイトの中の余った(低位)ビットは0にしておきます。
プログラムはファイルの最初の4バイトを読み込んで矩形イメージの制御コード(
\x1bQnnn;xxx;0!a)を出力し、その後ファイルの最後までのイメージデータを出力
します。
●行の先頭1バイトが0x05(^E)の場合は、その後の文字列を2文字ずつ16進数と
して1バイトに変換してプリンタに出力します。必ず、正しい16進数の偶数個の
文字列を置いて下さい。
●行の先頭1バイトが0x06(^F)の場合は、その後の文字列をファイル名としてファ
イルを開き、そのファイル内容(ビット・イメージ等)を何のコード変換もせずに
そのままプリンタに出力します。
●行の先頭1バイトが0x1F以下で上記以外の場合(コントロール・コード)は、その
行の内容(プリンタ制御文字列)をそのままプリンタに出力します。
●行の先頭1バイトが上記以外の場合、すなわち、0x20以上の場合、シフトJISの
全角文字はJISに変換して出力し、半角文字は2バイト半角漢字(JISコード:
2DXX,2EXX)にコード変換して出力します。
【使用例】
私がいつも使用しているドキュメント印字用バッチコマンドを紹介します。これは、
半角80桁以内で桁折りされているテキストファイルをB5用紙に1ページあたり4
5、50、54行で印字するものです(P45.BAT, P50.BAT, P54.BAT)。ヘッダーとし
て各ページに、ファイル印字日時、ファイル名、ページ番号が入ります。たとえば、
1ページあたり45行でこのファイル自身を印字するには、
P45 FMLBP.DOC
とするだけです。バッチ中でJGAWKを使用しており、「C:\UTY\PAGE.AWK」が必
要です。それと日時の取得に「KIROKU.COM」が必要です。また、「C」ドライブが書
き込み可能でなければなりません。ドライブ構成、ディレクトリ構成が異なる場合、
および、TOWNSで使用する場合はバッチファイルを適宜書き換えて下さい。なお、
「PAGE.AWK」では復改コードとして「ESC+E」を使用しています。
「P45.BAT」における、JGAWKのコマンドラインでの「PAGE.AWK」の変数指定
の意味は次の通り。
h=70:20
ヘッダーの文字サイズと文字ピッチ:7.0ポイント、20ドット
d=105:27
本文の文字サイズと文字ピッチ:10.5ポイント、27ドット
hp=85
ヘッダーの左端からの位置
l=45
改ページする行数
t=%VAR%
タブ展開の半角ブランク数(バッチで指定しないと8になる)
「P45.BAT」における、プリンタに対するコントロールコードの意味は次の通り。
(コントロールコードのマニュアルが別売りのため、推測を含む)
$1bQ180!A
ドット数指定の単位を1/180インチとする
$1bQ1!D
プリント部数1部
$1b$24B
JIS83漢字の指定
$1bQ36;180$20G
改行ピッチ(ESC+Eでの)を36/180インチとする
$1bQ3;27$20Q
レフトマージンを3×27ドットとする
なお、おまけとして「TOFM.BAT」と「TOEP.BAT」を付けておきます。FMLBPの
動作モードを切り換えるもので、それぞれ ESC/P→FM, FM→ESC/P に切り換えます。
【プログラム】
基本的にシフトJIS→JIS等のコード変換のたぐいは、全てこのプログラム中
で行い、このプログラムの出力=プリンタへの出力としたかったため、MS-DOS
のプリンタ出力に関するシステムコールは使用していません。BIOSのプリンタ出
力を使用しています。
TOWNS用のものは「AX=100H,INT 94H」を使用しています。最近、TOWNS
用のプリンタケーブルを自作して(どうして、富士通はプリンタケーブルをころころ
変えるのだろう。FM77AV40のフルセントロでいいのに。)TOWNSでの動
作確認だけはしていますが、自宅にはFMLBPがないので接続してのテストはして
いません。あしからず。実行ファイル名は「FMLBPTWN.EXE」と成っています。
FMV用のものは「AH=0,INT 17H」を使用しています。ただ、これも「JPRINTER.S
YS」等の日本語プリンタドライバが組み込まれているとシフトJIS→JISのコー
ド変換をしたり、ESC/P用の制御コードを出力したりします。何もせずに単にデータ
をプリンタに出力するというルーチンは無いのでしょうか。実行ファイル名は「FMLB
PFMV.EXE」と成っています。
それぞれの機種により、実行ファイル名を変えてあるので、使いたい機種用のもの
を「FMLBP.EXE」にリネームして使って下さい。
【開発・著作権】
このプログラムはLSI C-86 Ver.3.30 試食版によって開発しました。
Cのソースコードについては完全にフリーとします。改良、改造も可です。実行プ
ログラムについてはLSI C-86試食版の配布条件に従ってください。(手数料
以上の金銭の授受は禁じられています。)